﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Runtime.InteropServices;
using System.Text;

namespace Lcsoft.TemplateEngine.Tags
{
	/// <summary>
	/// 表示能够区分代码运行优先级的配置型语句标签。
	/// </summary>
	[ComVisible(true)]
	[Serializable]
	public class ImportantTag : ConfigurationElement
	{
		/// <summary>
		/// 初始化 <see cref="ImportantTag"/> 类的新实例。
		/// </summary>
		/// <param name="prefix">模板引擎语句标签的前缀名。</param>
		/// <param name="line">标签所在的行数。</param>
		/// <param name="column">标签所在的列数。</param>
		public ImportantTag(string prefix, int line, int column) : base(prefix, "important", line, column) { }

		/// <summary>
		/// 获取当前 <see cref="ImportantTag"/> 包含的代码。
		/// </summary>
		public string InnerCode
		{
			get
			{
				var code = new StringBuilder();

				if (this.Nodes.Count > 0) foreach (var node in this.Nodes) code.Append(node.ToAspx());

				return code.ToString();
			}
		}

		/// <summary>
		/// 获取代码优先级，返回值越大代码优先级越低。
		/// </summary>
		public int Priority
		{
			get
			{
				int priority;

				return int.TryParse(this.GetAttributeValue("priority"), out priority) ? priority : 0;
			}
		}
	}
}
